In a number of applications, data must be stored for future use. For example, some calculations require the use of previously-calculated data values in order to calculate the next data value in a series. Typically, these previously-calculated data values are stored in a data structure such as a buffer in order to provide access to the previously-calculated data values when the previously-calculated data values are next required.
However, data buffers do not have unlimited capacity. Eventually, as a buffer reaches its maximum capacity, some existing data in the buffer must be discarded if new data is to be stored. Discarding the data can be problematic because the deleted data may be required in the future. With conventional techniques, discarded data cannot be easily recovered if the discarded is needed again.